﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Xml.Serialization;
using System.Runtime.Serialization;

namespace AudiPyme.BLL
{
    //Clase utilizada en el algoritmo de cálculo de riesgos que recoge los controles asociados a una amenaza y la cobertura de estos
    public class NivelAmenaza : IComparable
    {
        int idAmenaza;
        List<ControlesCheckList> controlesAmenaza;
        int coberturaControlesAmenaza;

        public NivelAmenaza()
        {
            idAmenaza = 0;
            controlesAmenaza = new List<ControlesCheckList>();
            coberturaControlesAmenaza = 0;
        }

        public NivelAmenaza(int IdAmenaza, List<ControlesCheckList> ControlesAmenaza, int CoberturaControlesAmenaza)
        {
            this.idAmenaza = IdAmenaza;
            this.controlesAmenaza = ControlesAmenaza;
            this.coberturaControlesAmenaza = CoberturaControlesAmenaza;
        }
        public NivelAmenaza(int IdAmenaza, List<ControlesCheckList> ControlesAmenaza)
        {
            this.idAmenaza = IdAmenaza;
            this.controlesAmenaza = ControlesAmenaza;
        }
        public int IdAmenaza
        {
            get { return idAmenaza; }
            set { idAmenaza = value; }
        }
        public List<ControlesCheckList> ControlesAmenaza
        {
            get { return controlesAmenaza; }
            set { controlesAmenaza = value; }
        }
        public int CoberturaControlesAmenaza
        {
            get { return coberturaControlesAmenaza; }
            set { coberturaControlesAmenaza = value; }
        }

        public int CompareTo(object obj)
        {
            NivelAmenaza otroNivelAmenaza = obj as NivelAmenaza;
            if (otroNivelAmenaza == null)
            {
                return 0;
            }
            switch(CoberturaControlesAmenaza.CompareTo(otroNivelAmenaza.CoberturaControlesAmenaza))
            {
                case 1:
                    return -1;
                case -1:
                    return 1;
                default:
                    return CoberturaControlesAmenaza.CompareTo(otroNivelAmenaza.CoberturaControlesAmenaza);
            }
        }

    }
}
